perm filename SCHED[1,JRA]1 blob
sn#539525 filedate 1980-10-06 generic text, type C, neo UTF8
COMMENT ā VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Part one: Functions as passive objects
C00005 00003 The point of the course is to present the fundamental notions of
C00009 ENDMK
Cā;
Part one: Functions as passive objects
1 Notation
The role of notation in science
expressivity
subordination of detail
economy
amenability to proof
The impact of computing on notation
executability
representability of algorithms
The difficulties with programming languages
2 The language
Data structures
the representability of programs
abstract objects
Algorithmic notation
constructors, selectors, and recognizers
conditional expressions
definitions
The mapping of expressions to data structures
3 Examples
Numeric examples
Non-numeric computation
4 Evaluation
5 Deduction vs computation
systems for substitution and simplification
computation as controlled deduction
call-by-name vs. call-by-value
Semantics of programming languages
Representability of programs
a detailed discussion
An evaluation algorithm
The operational view
Implementation strategies
call-by-value
weak vs. strong conditional
simulation of substitution
6 Control: function vs algorithm
an analysis of the evaluator
7 Applicative v.s. imperative
control as a programming tool
side-effects
8 Property-lists and message passing
classes as properties
algorithms as message passing
9 Object-oriented programming
10 Smalltalk and Actors
11 Lexical vs dynamic scoping
Evaluation revisited
variables: local, free, global
12 Machines and compiling
13 The LISP machine
Traditional machines as microcode
Compilation
binding strategies
Part two: Functions as active objects
14 Functions as first-class objects
15 Applications of functional objects
16 Evaluation of Functionals
17 The impact of scoping
18
19
20
21
22
The point of the course is to present the fundamental notions of
computing.
The course has the same general characteristic as that of the functional
programming class, but will use a curriculum based on access to
interactive personal computers as the primary tool for gaining fluency
with the concepts and gaining an understanding of interactive computing.
The notions of computing are quite simple, yet the contemporary approach
tends to obfuscate rather than illuminate. At the concept level, simple
ideas become buried in syntax: algorithms are confused with programming
language syntax; computation is confused compiling; compiling is confused
with syntax analysis.
On the technological side, the Practice of computing suffers from the dead
weight of twenty years of batch processing. "Glass teletypes" create card
decks and text editors manipulate card images. Alas, certain computing
"methodologies" even glory in the "discipline" that such primitive
interaction forces one to endure.
Without an understanding of fundamental concepts, and saddled with the
outdated and stilted programming techniques, it is not suprising that
computer-related productivity is falling.
Fortunately, the intellectual legacy of mathematical logic and be coupled
with a few insights of modern computing to supply an adequate foundation
for modern computing. The missing ingredient in the traditional setting
was the baroque computing engine that logicians used; a Turing machine is
a dreadful architecture. The fundamentals of the new formalism were
discussed by John McCarthy twenty years ago, and have been the basis of
the programming language named LISP. The new ingredient is the development
of the personal computing environment. One cannot effectively learn about
computing without practicing the art. Until recently, appropriate tools
for computing "practice" have been restricted to research establishments
fr at least two reasons. First, many of the ideas about effective
interactive environments have been the subject of research; secondly, and
more immediate, the cost of these components has been extraordinally high.
Technology has changed that second cosideration, and the research ideas
have reached a systhesis stage. The time is therefore ripe to move the
intellectual and methodological and technological results into the
educational domain. That is the intent of this course.